package com.itheima.io.inputstream.demo01;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;

/**
 * 演示：使用InputStream一次读取一个字节
 */
public class InputStreamDemo01 {

    /**
     * InputStream是字节输入流的顶层父类，是一个抽象类；既然是一个抽象类，那么我们就不能直接new，我们要使用就需要使用多态的
     * 方式去创建对象，那么要使用多态的方式去创建对象，那么我们就需要选定一个InputStream的子类, 我们选定FileInputStream
     * 要使用FileInputStream，那么我们就需要创建对象，那么要创建对象，那么我们就需要借助于构造方法
     * public FileInputStream​(String name): 参数表示的就是要读取的文件名路径
     */
    public static void main(String[] args) throws IOException {

        // 1. 通过多态的方式去创建InputStream对象
        // 要求读取的文件必须存在，如果不存在直接抛出异常： FileNotFoundException
        InputStream inputStream = new FileInputStream("itheima-io-inputstream\\a.txt") ;

        // 2. 读取数据
        // public abstract int read()一次读取一个字节返回的是读取到的字节，如果读到文件末尾返回-1
//        int by = inputStream.read() ;
//        System.out.println((char)by);
//
//        by = inputStream.read() ;
//        System.out.println((char)by);
//
//        by = inputStream.read() ;
//        System.out.println((char)by);
//
//        by = inputStream.read() ;
//        System.out.println(by);
//
//        by = inputStream.read() ;
//        System.out.println(by);

//        int by = inputStream.read() ;
//        while(by != -1) {
//            System.out.print((char)by);
//            by = inputStream.read() ;
//        }

        int by = -1 ;                               // by变量的作用：就是用来记录读取到字节
        while((by = inputStream.read()) != -1) {
            System.out.print((char)by);
        }

        // 3. 释放资源
        inputStream.close();
    }

}
